"""
针对contents应用定义一些功能函数
"""
from goods.models import GoodsChannel

# 功能：构造主页三级分类导航信息的模版参数
def get_categories():
    categories = {}

    # 获取所有的频道(根据分组group_id、sequense排序)
    channels = GoodsChannel.objects.order_by(
        'group_id', 'sequence'
    )

    # 遍历每一个频道，构造分组频道数据
    for channel in channels:
        # channel是一个GoodsChannel对象
        if channel.group_id not in categories:
            categories[channel.group_id] = {
                "channels": [], # 一级分类
                'sub_cats': [] # 二级分类
            }
        # (1)、一级分类，往channels列表里追加频道信息(包含一级分类)
        categories[channel.group_id]['channels'].append({
            'id': channel.id,
            'name': channel.category.name, # 当前频道关联的分类的name
            'url': channel.url
        })
        # (2)、二级分类
        cat1 = channel.category # 一级分类对象
        cat2s = cat1.subs.all() # 二级分类查询集
        for cat2 in cat2s:
            # cat2每一个二级分类对象
            # (3)、三级分类
            cat3_list = []
            cat3s = cat2.subs.all() # 当前二级分类对象关联的三级分类查询集
            for cat3 in cat3s:
                # cat3每一个三级份分类对象
                cat3_list.append({
                    'id': cat3.id,
                    'name': cat3.name
                })

            # cat2是每一个二级分类对象
            categories[channel.group_id]['sub_cats'].append({
                'id': cat2.id,
                'name': cat2.name,
                'sub_cats': cat3_list # 当前二级分类关联的三级份额里
            })

    return categories











